The present invention relates to the field of computer graphics, and in particular to methods and apparatus for creating, modifying, and using components to create computer graphics productions. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking and artistically compelling rendered images and animations.
Computer graphics images, animations, and other productions involving computer graphics, such as interactive entertainment software, are created from a number of different components. Generally, components include any data and instructions used to create products and applications that include computer graphics. Components can include three-dimensional models of geometry; texture maps, other arrays of data, lighting, and shading programs used to determine the visual appearance of models; and animation data and deformer functions used to specify changes and motion over time. One or more components are typically stored as a digital asset. A digital asset can be a file, database table, executable program or script, or any other type of persistent data store.
Components typically include one or more attributes containing data associated with the component. Attributes can specify any static or varying property or behavior of a component. For example, a component may be a model of a sphere. Attributes of this example component could describe properties such as the radius of the sphere and the location of the center of the sphere. Changing the value of this example component's radius attribute will change the radius of the sphere. Different types of components may include different numbers and types of attributes. The structure, arrangement, and behaviors associated with the set of attributes of a component is referred to as the semantic structure of the component. Different components may have different semantic structures, based on the type of component and its intended use.
Components can include one or more relationships that associate the component to one or more other components. Components may be related together in a hierarchy for ease of use or to specify functionality. For example, a model of a character and a model of the character's hat may be associated together for ease of use. In another example, a set of coordinate transformations may be associated together in a specific order to define a sequence for applying transformations to models. The associations, communications, and/or dependencies between two or more components may be specified by the relationships of these components.
Components are typically combined during rendering to produce an animated sequence. For example, geometric models, shading programs and data, lighting, animation data, and deformers all need to be combined correctly to produce a rendered image or scene. The associations or relationships between components can specify how the components should be combined to create a rendered image or scene.
Additionally, due to dependencies and other relationships between components, some workflow activities that create and/or modify components may need to be performed in a specific order. The activities that create and modify digital assets and their components are sometimes collectively referred to as a digital production pipeline.
Digital production pipelines include modeling, shading, articulation, animation, simulation, layout, lighting, and rendering. Modeling is the creation of the three-dimensional geometry of characters, sets, props, and other objects. Shading is the specification of optical attributes of the surface and interior of objects. Articulation is the specification of joints and other moveable elements of objects. Animation specifies the motion of objects over time in one or more scenes, often with reference to the objects' articulations. Simulation specifies the motion, appearance, and/or behavior of objects. Layout specifies the arrangement of objects and cameras in one or more scenes. Lighting defines the location and other attributes of light in one or more scenes. Rendering produces images or animation from the components.
For large digital productions, such as in an animation or interactive digital production studio, it is often necessary for multiple people to be working on different activities of the digital production pipeline at the same time. Often, different people will be working on the same or related components at the same time. Additionally, some components may be created out of order. As a result, mistakes are common and often lead to conflicts within components and between related components.
Furthermore, components are often reused for a number of different purposes. First, an existing component can be modified for a particular context. For example, variations of a character model can be created with different clothing. Second, new components can be created based on previous components. The new components can then be modified as needed. For example, a new character model can be based on a previously created base model. The new character model can be modified from the base model to implement attributes unique to the new character model.
The reuse of components is not limited to models as described in the above examples. The reuse of components and variations thereof can be applied to all types of components and to any activities of the digital production pipeline. For example, variations of layout, camera, lighting, shading, articulation, animation, and/or simulation components can be used to create and evaluate different creative interpretations of a scene.
Prior digital production pipelines limit component reuse and user collaboration. Version control is one prior technique for collaboration in a digital production pipeline. Version control maintains a strictly linear pipeline workflow. As digital assets and their components progress through activities in the digital production pipeline, changes to components replace or overwrite the previous state of the components. Because of this, it is possible to make potentially destructive modifications to any data that was authored at previous stages in the pipeline.
The disadvantage of version control techniques is that the workflow is strictly linear. Modifications of attributes of components are typically destructive to prior work done. It is difficult or impossible to go back to a previous stage of the digital production pipeline and create variations without discarding all of the data created following that previous stage. It is also typically difficult or impossible to return to an earlier point in the workflow to make changes and still have unaffected “downstream” changes apply. Additionally, because write access to digital assets is restricted to a single user at a time, bottlenecks occur when other users must wait until the current user of a digital asset relinquishes ownership.
Change isolation by scope is another prior technique for collaboration in a digital production pipeline. New components can cross-reference and encapsulate previously created components. The new component has a distinct identity from the referenced component. Typically, prior techniques allow only limited modifications to the new component without impacting the original referenced component. The major drawback to this technique is that there is no way to describe a progressive refinement, or incremental modification to an existing component. It only allows for the creation of a new and unique component that is a variation of an existing one.
It is therefore desirable for a system and method to enable collaboration in digital production pipelines. It is further desirable for the system and method to enable scene modification at any point of the production pipeline and in any order without disrupting work upstream or downstream in the pipeline. It is also desirable for the system and method to enable unrestricted and progressive modifications, refinements, and variations of components at any point of the digital production pipeline. It is additionally desirable for the system and method to include a unified system of scene specification and modification that enables any aspects of the scene to be added, removed, or modified at any point of the digital production pipeline.